/*
 * nodos_praid.c
 *
 *  Created on: 15/11/2011
 *      Author: Cristian
 */

#include "../includes/praid.h"

/***********************************************************************
FUNCION: InsertarNodoDisco
PROCESO: PRAID
Autor: Cristian Rios
PRE: Haber recibido un handshake correcto de un nuevo PPD.
POST: Un nuevo nodo con la informacion del nuevo disco queda insertada en la lista lstProc.
DEVUELVE: void; aborta el programa en caso de que se quede sin memoria.
FUNCION PPAL: Insertar nuevas estructuras infoDeDisco en la lista NodoDisco.
**********************************************************************/
void InsertarNodoDisco (struct infoDeDisco info, struct param *p){

	struct NodoDisco *aux;
	struct NodoDisco *nuevo;
	nuevo=(NodoDisco*)malloc(sizeof(NodoDisco));

	if ( nuevo == NULL )
	{
	    printf("Error: fuera de memoria\n");
	    exit(1);
	}

	nuevo->info = info;
	nuevo->proximo = NULL;

	if (p->lstD == NULL) p->lstD = nuevo;
	else {

		aux = p->lstD;
		while (aux->proximo != NULL){
			aux = aux->proximo;
		}
		aux->proximo = nuevo;
	}

}

/***********************************************************************
FUNCION: InsertarNuevoNodoProceso
PROCESO: PRAID
Autor: Cristian Rios
PRE: Haber recibido un nuevo handskake de un proceso PPD o PFS
POST: Un nuevo nodo queda insertado en la cola de nuevos procesos
DEVUELVE: void
FUNCION PPAL: Encolar nodos de nuevos procesos para luego ser analizada su validez.
**********************************************************************/
/*
void InsertarNuevoNodoProceso (uint16_t sock, nuevoProceso **p){

	nuevoProceso *aux;
	aux= (nuevoProceso*)malloc(sizeof(nuevoProceso));
	nuevoProceso *nuevo;
	nuevo= (nuevoProceso*)malloc(sizeof(nuevoProceso));

	if ( nuevo == NULL )
	{
	    printf("Error: fuera de memoria\n");
	    exit(1);
	}

	nuevo->sockId = sock;
	nuevo->proximo = NULL;

	if (*p == NULL) *p = nuevo;
	else {

		aux = *p;
		while (aux->proximo != NULL){
			aux = aux->proximo;
		}
		aux->proximo = nuevo;
	}
	free(aux);
}
*/

/***********************************************************************
FUNCION: eliminarPrimerNodoProceso
PROCESO: PRAID
Autor: Cristian Rios
PRE: haber recibido un nodo de la cola de nuevosProcesos no vacía.
POST: el puntero a la cola del tipo nuevoProceso ahora apunta al 2do nodo de la cola y el 1ero liberado de la memoria
DEVUELVE: void
FUNCION PPAL: liberar el 1er nodo de la cola del tipo nuevoProceso para poder procesar la validez del siguiente nodo.
**********************************************************************/
/*
void eliminarPrimerNodoProceso(struct param **p){

	param *aux;
	aux = (param*)malloc(sizeof(**p));
	param *auxSig;
	auxSig = NULL;
	auxSig->newProcess = NULL;
	aux = *p;

	auxSig->newProcess = aux->newProcess->proximo;

	aux = auxSig;

	free (aux);

}
*/

